Ansible-এ template
মডিউল ব্যবহার করা হয় Jinja2 টেম্পলেট ফাইল থেকে কনফিগারেশন ফাইল বা অন্যান্য ফাইল তৈরি করার জন্য। এই মডিউলটি ডায়নামিক কনফিগারেশন ফাইল তৈরি করতে সহায়ক, যেখানে ভ্যারিয়েবল বা কন্ডিশনাল লজিক ব্যবহার করে ফাইল কাস্টমাইজ করা যায়।
template
মডিউল কীভাবে কাজ করে?template
মডিউল Jinja2 টেম্পলেট ফাইলটি সোর্স হিসেবে ব্যবহার করে এবং টার্গেট সিস্টেমে (রিমোট হোস্ট) এটি কপি করে। টেম্পলেট ফাইলে Jinja2 সিনট্যাক্স ব্যবহার করে ভ্যারিয়েবল এবং লজিক যুক্ত করা যায়, যা Ansible প্লেবুক বা ইনভেন্টরি থেকে ডেটা নিয়ে ডায়নামিক কনফিগারেশন তৈরি করে।
template
মডিউল এর সিনট্যাক্স
- name: টেম্পলেট ব্যবহার করে ফাইল কপি করা
template:
src: /path/to/template_file.j2
dest: /path/to/destination_file
owner: user
group: group
mode: '0644'
template
মডিউল এর উপাদানগুলোsrc
: টেম্পলেট ফাইলের সোর্স পাথ (লোকাল সিস্টেমে)। এই ফাইলটি Jinja2 সিনট্যাক্স ব্যবহার করে তৈরি করা হয়।dest
: টার্গেট পাথ যেখানে টেম্পলেট ফাইলটি রিমোট সিস্টেমে কপি করা হবে।owner
, group
, এবং mode
: টার্গেট ফাইলের মালিকানা, গ্রুপ, এবং পারমিশন সেট করতে ব্যবহৃত হয় (ঐচ্ছিক)।ধরা যাক, আপনার একটি Nginx কনফিগারেশন ফাইল আছে যা ডায়নামিক ভ্যারিয়েবল ব্যবহার করে তৈরি করা হবে।
nginx.conf.j2
):
server {
listen {{ http_port }};
server_name {{ domain_name }};
location / {
proxy_pass http://{{ backend_server }};
}
}
---
- name: Deploy Nginx configuration
hosts: webservers
become: yes
vars:
http_port: 80
domain_name: example.com
backend_server: 192.168.1.10
tasks:
- name: Copy Nginx configuration using template
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/conf.d/nginx.conf
owner: root
group: root
mode: '0644'
বিশ্লেষণ:
http_port
, domain_name
, এবং backend_server
ভ্যারিয়েবলগুলো প্লেবুকের vars
সেকশনে উল্লেখ করা হয়েছে, যা টেম্পলেট ফাইল (nginx.conf.j2
) এ ব্যবহার করা হয়েছে।template
মডিউল টেম্পলেট ফাইলটি /etc/nginx/conf.d/nginx.conf
এ কপি করবে এবং ফাইলের মালিকানা, গ্রুপ, ও পারমিশন সেট করবে।template
মডিউল এবং Jinja2template
মডিউল Jinja2 সিনট্যাক্স ব্যবহার করে, যা নিচের ফিচারগুলো সমর্থন করে:
{{ variable_name }}
ব্যবহার করে ভ্যারিয়েবল উল্লেখ করা যায়।{% for item in list %}
ব্যবহার করে লুপ করা যায়।{% if condition %}
ব্যবহার করে শর্ত অনুযায়ী কনফিগারেশন তৈরি করা যায়।
server {
listen 80;
server_name {{ domain_name }};
{% if ssl_enabled %}
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/{{ domain_name }}.crt;
ssl_certificate_key /etc/nginx/ssl/{{ domain_name }}.key;
{% endif %}
}
উপরের টেম্পলেট ফাইলে, যদি ssl_enabled
ভ্যারিয়েবলটি true
হয়, তাহলে SSL কনফিগারেশন অংশটি যুক্ত হবে। অন্যথায়, এই অংশটি এড়িয়ে যাবে।
template
মডিউল ব্যবহার করে Jinja2 টেম্পলেটের মাধ্যমে ডায়নামিক কনফিগারেশন ফাইল তৈরি করা যায়।template
মডিউল একটি অত্যন্ত শক্তিশালী টুল, যা প্লেবুকের পুনঃব্যবহারযোগ্যতা ও কার্যকারিতা বাড়ায়।template
মডিউল ব্যবহার করে আপনি সহজেই ডায়নামিক কনফিগারেশন এবং ফাইল ম্যানেজমেন্ট করতে পারবেন, যা আপনার প্লেবুক এবং রোলগুলিকে আরও শক্তিশালী করবে।
আরও দেখুন...